#ifdef INCLUDED_SINGLETON

#ifndef INCLUDED_SINGLETON2
#define INCLUDED_SINGLETON2

template <typename T>
Singleton<T>::Singleton()
{

}

template <typename T>
Singleton<T>::~Singleton()
{

}

template <typename T>
T * Singleton<T>::getInstance()
{
    if (m_singleton == NULL)
        m_singleton = new T;

    return (static_cast<T*> (m_singleton));
}

template <typename T>
void Singleton<T>::kill ()
{
    if (m_singleton != NULL)
    {
        delete m_singleton;
        m_singleton = NULL;
    }
}

#endif
#endif
